home *** CD-ROM | disk | FTP | other *** search
/ Compendium Deluxe 2 / LSD and 17bit Compendium Deluxe - Volume II.iso / a / prog / misc / gfront11.lha / GUIFront / Demos / Source / General.c < prev    next >
C/C++ Source or Header  |  1994-11-01  |  11KB  |  332 lines

  1.  
  2. /* General.c - The GUI of the 'General' window of Spot
  3.  *
  4.  * This is a GUIFront example GUI. To build an example, compile and link this
  5.  * file with Generic.o (also supplied).
  6.  * Everything prefixed with DEMO_ is exported to Generic.o.
  7.  */
  8.  
  9. #include <libraries/guifront.h>
  10.  
  11. /* First, some Gadget ID's */
  12.  
  13. enum
  14. {
  15.     GID_COMMANDSTXT,
  16.     GID_EDITOR,
  17.     GID_EDITFILE,
  18.     GID_GETEDITFILE,
  19.     GID_WBTOFRONT,
  20.     GID_CHECKDATE,
  21.     GID_TOSSERTXT,
  22.     GID_DUPECHECKING,
  23.     GID_HOTKEYSTXT,
  24.     GID_SPOTTOFRONT,
  25.     GID_MSGBASECRUNCHTXT,
  26.     GID_CRUNCHBUFFER,
  27.     GID_PATHSFILESTXT,
  28.     GID_AREAS,
  29.     GID_GETAREAS,
  30.     GID_INBOUND,
  31.     GID_GETINBOUND,
  32.     GID_OUTBOUND,
  33.     GID_GETOUTBOUND,
  34.     GID_WORK,
  35.     GID_GETWORK,
  36.     GID_NODELIST,
  37.     GID_GETNODELIST,
  38.     GID_FATTACH,
  39.     GID_GETFATTACH,
  40.     GID_SAVE,
  41.     GID_GETSAVE,
  42.     GID_AREXX,
  43.     GID_GETAREXX,
  44.     GID_LOGFILE,
  45.     GID_GETLOGFILE,
  46.     GID_OPTIMIZE,
  47. };
  48.  
  49. /* Some data and tag items we'll be needing later */
  50.  
  51. static const STRPTR dupechecklabels[] =
  52. {
  53.     "Off",
  54.     "Toss in BAD",
  55.     "Kill",
  56.     NULL,
  57. };
  58.  
  59. static const struct TagItem dupechecktags[] =
  60. {
  61.     {GTCY_Labels, dupechecklabels},
  62.     {TAG_DONE},
  63. };
  64.  
  65. static const STRPTR crunchbufferlabels[] =
  66. {
  67.     "No Crunching",
  68.     "Large (256K)",
  69.     "Medium (65K)",
  70.     "Small (33K)",
  71.     NULL,
  72. };
  73.  
  74. static const struct TagItem crunchbuffertags[] =
  75. {
  76.     {GTCY_Labels, crunchbufferlabels},
  77.     {TAG_DONE},
  78. };
  79.  
  80. static const STRPTR optimizelabels[] =
  81. {
  82.     "Areas path",
  83.     "RAM:T",
  84.     NULL,
  85. };
  86.  
  87. static const struct TagItem optimizetags[] =
  88. {
  89.     {GTCY_Labels, optimizelabels},
  90.     {TAG_DONE},
  91. };
  92.  
  93. static const struct TagItem geteditfiletags[] =
  94. {
  95.     {ALT_Image, ALTI_GetFile},
  96.     {ALT_AslRequester, TRUE},
  97.     {TAG_DONE},
  98. };
  99.  
  100. static const struct TagItem getareastags[] =
  101. {
  102.     {ALT_Image, ALTI_GetDir},
  103.     {ALT_AslRequester, TRUE},
  104.     {TAG_DONE},
  105. };
  106.  
  107. static const struct TagItem getinboundtags[] =
  108. {
  109.     {ALT_Image, ALTI_GetDir},
  110.     {ALT_AslRequester, TRUE},
  111.     {TAG_DONE},
  112. };
  113.  
  114. static const struct TagItem getoutboundtags[] =
  115. {
  116.     {ALT_Image, ALTI_GetDir},
  117.     {ALT_AslRequester, TRUE},
  118.     {TAG_DONE},
  119. };
  120.  
  121. static const struct TagItem getworktags[] =
  122. {
  123.     {ALT_Image, ALTI_GetDir},
  124.     {ALT_AslRequester, TRUE},
  125.     {TAG_DONE},
  126. };
  127.  
  128. static const struct TagItem getnodelisttags[] =
  129. {
  130.     {ALT_Image, ALTI_GetDir},
  131.     {ALT_AslRequester, TRUE},
  132.     {TAG_DONE},
  133. };
  134.  
  135. static const struct TagItem getfattachtags[] =
  136. {
  137.     {ALT_Image, ALTI_GetDir},
  138.     {ALT_AslRequester, TRUE},
  139.     {TAG_DONE},
  140. };
  141.  
  142. static const struct TagItem getsavetags[] =
  143. {
  144.     {ALT_Image, ALTI_GetDir},
  145.     {ALT_AslRequester, TRUE},
  146.     {TAG_DONE},
  147. };
  148.  
  149. static const struct TagItem getarexxtags[] =
  150. {
  151.     {ALT_Image, ALTI_GetDir},
  152.     {ALT_AslRequester, TRUE},
  153.     {TAG_DONE},
  154. };
  155.  
  156. static const struct TagItem getlogfiletags[] =
  157. {
  158.     {ALT_Image, ALTI_GetFile},
  159.     {ALT_AslRequester, TRUE},
  160.     {TAG_DONE},
  161. };
  162.  
  163. /* Now, the GadgetSpec's we'll be needing for this GUI */
  164.  
  165. static GadgetSpec gadgetspecs[] =
  166. {
  167.     {TEXT_KIND,   0,0, {0,0,0,0, "Commands", NULL, GID_COMMANDSTXT, PLACETEXT_IN | NG_HIGHLABEL}, NULL, GS_DefaultTags},
  168.     {STRING_KIND, 20,0,{0,0,0,0, "_Editor", NULL, GID_EDITOR, PLACETEXT_LEFT}, NULL, GS_DefaultTags},
  169.     {STRING_KIND, 20,0,{0,0,0,0, "Edi_t file", NULL, GID_EDITFILE, PLACETEXT_LEFT}, NULL, GS_DefaultTags},
  170.     {GETALT_KIND, 0,0, {0,0,0,0, NULL, NULL, GID_GETEDITFILE, PLACETEXT_IN},geteditfiletags,GS_DefaultTags},
  171.     {CHECKBOX_KIND,0,0,{0,0,0,0, "W_B to front",NULL, GID_WBTOFRONT,PLACETEXT_LEFT},NULL,GS_DefaultTags},
  172.     {CHECKBOX_KIND,0,0,{0,0,0,0, "_Check date",NULL,GID_CHECKDATE,PLACETEXT_LEFT},NULL,GS_DefaultTags},
  173.     {TEXT_KIND,   0,0, {0,0,0,0, "Tosser", NULL, GID_TOSSERTXT, PLACETEXT_IN | NG_HIGHLABEL}, NULL, GS_DefaultTags},
  174.     {CYCLE_KIND,  0,0, {0,0,0,0, "_Dupe checking", NULL,GID_DUPECHECKING, PLACETEXT_LEFT}, dupechecktags, GS_DefaultTags},
  175.     {TEXT_KIND,   0,0, {0,0,0,0, "Hotkeys", NULL, GID_HOTKEYSTXT, PLACETEXT_IN | NG_HIGHLABEL}, NULL, GS_DefaultTags},
  176.     {STRING_KIND, 0,0,{0,0,0,0, "_Spot to front", NULL, GID_SPOTTOFRONT, PLACETEXT_LEFT}, NULL, GS_DefaultTags},
  177.     {TEXT_KIND,   0,0, {0,0,0,0, "Message base crunching", NULL, GID_MSGBASECRUNCHTXT, PLACETEXT_IN | NG_HIGHLABEL}, NULL, GS_DefaultTags},
  178.     {CYCLE_KIND,  0,0, {0,0,0,0, "Cr_unch buffer", NULL,GID_CRUNCHBUFFER, PLACETEXT_LEFT}, crunchbuffertags, GS_DefaultTags},
  179.     {TEXT_KIND,   0,0, {0,0,0,0, "Paths/Files", NULL, GID_PATHSFILESTXT, PLACETEXT_IN | NG_HIGHLABEL}, NULL, GS_DefaultTags},
  180.     {STRING_KIND, 20,0,{0,0,0,0, "_Areas", NULL, GID_AREAS, PLACETEXT_LEFT}, NULL, GS_DefaultTags},
  181.     {GETALT_KIND, 0,0, {0,0,0,0, NULL, NULL, GID_GETAREAS, PLACETEXT_IN},getareastags,GS_DefaultTags},
  182.     {STRING_KIND, 20,0,{0,0,0,0, "_Inbound", NULL, GID_INBOUND, PLACETEXT_LEFT}, NULL, GS_DefaultTags},
  183.     {GETALT_KIND, 0,0, {0,0,0,0, NULL, NULL, GID_GETINBOUND, PLACETEXT_IN},getinboundtags,GS_DefaultTags},
  184.     {STRING_KIND, 20,0,{0,0,0,0, "_Outbound", NULL, GID_OUTBOUND, PLACETEXT_LEFT}, NULL, GS_DefaultTags},
  185.     {GETALT_KIND, 0,0, {0,0,0,0, NULL, NULL, GID_GETOUTBOUND, PLACETEXT_IN},getoutboundtags,GS_DefaultTags},
  186.     {STRING_KIND, 20,0,{0,0,0,0, "_Work", NULL, GID_WORK, PLACETEXT_LEFT}, NULL, GS_DefaultTags},
  187.     {GETALT_KIND, 0,0, {0,0,0,0, NULL, NULL, GID_GETWORK, PLACETEXT_IN},getworktags,GS_DefaultTags},
  188.     {STRING_KIND, 20,0,{0,0,0,0, "_Nodelist", NULL, GID_NODELIST, PLACETEXT_LEFT}, NULL, GS_DefaultTags},
  189.     {GETALT_KIND, 0,0, {0,0,0,0, NULL, NULL, GID_GETNODELIST, PLACETEXT_IN},getnodelisttags,GS_DefaultTags},
  190.     {STRING_KIND, 20,0,{0,0,0,0, "_FAttach", NULL, GID_FATTACH, PLACETEXT_LEFT}, NULL, GS_DefaultTags},
  191.     {GETALT_KIND, 0,0, {0,0,0,0, NULL, NULL, GID_GETFATTACH, PLACETEXT_IN},getfattachtags,GS_DefaultTags},
  192.     {STRING_KIND, 20,0,{0,0,0,0, "Sa_ve", NULL, GID_SAVE, PLACETEXT_LEFT}, NULL, GS_DefaultTags},
  193.     {GETALT_KIND, 0,0, {0,0,0,0, NULL, NULL, GID_GETSAVE, PLACETEXT_IN},getsavetags,GS_DefaultTags},
  194.     {STRING_KIND, 20,0,{0,0,0,0, "ARe_xx", NULL, GID_AREXX, PLACETEXT_LEFT}, NULL, GS_DefaultTags},
  195.     {GETALT_KIND, 0,0, {0,0,0,0, NULL, NULL, GID_GETAREXX, PLACETEXT_IN},getarexxtags,GS_DefaultTags},
  196.     {STRING_KIND, 20,0,{0,0,0,0, "_Log file", NULL, GID_LOGFILE, PLACETEXT_LEFT}, NULL, GS_DefaultTags},
  197.     {GETALT_KIND, 0,0, {0,0,0,0, NULL, NULL, GID_GETLOGFILE, PLACETEXT_IN},getlogfiletags,GS_DefaultTags},
  198.     {CYCLE_KIND,  0,0, {0,0,0,0, "Optimi_ze", NULL, GID_OPTIMIZE, PLACETEXT_LEFT},optimizetags,GS_DefaultTags},
  199. };
  200.  
  201. /* Now, we group all of these GadgetSpecs into an array of pointers, so the
  202.  * layout engine can locate gadgets merely by their Gadget IDs.
  203.  */
  204.  
  205. GadgetSpec *DEMO_GadgetSpecList[] =
  206. {
  207.     &gadgetspecs[0], &gadgetspecs[1], &gadgetspecs[2], &gadgetspecs[2],
  208.     &gadgetspecs[3], &gadgetspecs[4], &gadgetspecs[5], &gadgetspecs[6],
  209.     &gadgetspecs[7], &gadgetspecs[8], &gadgetspecs[9], &gadgetspecs[10],
  210.     &gadgetspecs[11], &gadgetspecs[12], &gadgetspecs[13], &gadgetspecs[14],
  211.     &gadgetspecs[15], &gadgetspecs[16], &gadgetspecs[17], &gadgetspecs[18],
  212.     &gadgetspecs[19], &gadgetspecs[20], &gadgetspecs[21], &gadgetspecs[22],
  213.     &gadgetspecs[23], &gadgetspecs[24], &gadgetspecs[25], &gadgetspecs[26],
  214.     &gadgetspecs[27], &gadgetspecs[28], &gadgetspecs[29], &gadgetspecs[30],
  215.     &gadgetspecs[31], NULL,
  216. };
  217.  
  218. /* Finally, the layout tag list itself. This is where most of the work is
  219.  * done. This list completely describes how the above gadgets are arranged
  220.  * in groups in the GUI.
  221.  */
  222.  
  223. ULONG DEMO_LayoutList[] =
  224. {
  225.     GUIL_Flags, GUILF_PropShare,
  226.  
  227.     GUIL_VertGroup, 1,
  228.         GUIL_Flags, GUILF_PropShare | GUILF_EqualWidth | GUILF_LabelAlign,
  229.  
  230.         GUIL_GadgetSpecID, GID_COMMANDSTXT,
  231.         GUIL_GadgetSpecID, GID_EDITOR,
  232.  
  233.         GUIL_HorizGroup, 0,
  234.             GUIL_Flags, GUILF_PropShare | GUILF_EqualHeight,
  235.             GUIL_GadgetSpecID, GID_EDITFILE,
  236.             GUIL_GadgetSpecID, GID_GETEDITFILE,
  237.         TAG_DONE,
  238.  
  239.         GUIL_GadgetSpecID, GID_WBTOFRONT,
  240.         GUIL_GadgetSpecID, GID_CHECKDATE,
  241.         GUIL_GadgetSpecID, GID_TOSSERTXT,
  242.         GUIL_GadgetSpecID, GID_DUPECHECKING,
  243.  
  244.         GUIL_GadgetSpecID, GID_HOTKEYSTXT,
  245.         GUIL_GadgetSpecID, GID_SPOTTOFRONT,
  246.         GUIL_GadgetSpecID, GID_MSGBASECRUNCHTXT,
  247.         GUIL_GadgetSpecID, GID_CRUNCHBUFFER,
  248.     TAG_DONE,
  249.  
  250.     GUIL_VertGroup, 1,
  251.         GUIL_Flags, GUILF_PropShare | GUILF_EqualWidth | GUILF_LabelAlign,
  252.  
  253.         GUIL_GadgetSpecID, GID_PATHSFILESTXT,
  254.  
  255.         GUIL_HorizGroup, 0,
  256.             GUIL_Flags, GUILF_PropShare | GUILF_EqualHeight,
  257.             GUIL_GadgetSpecID, GID_AREAS,
  258.             GUIL_GadgetSpecID, GID_GETAREAS,
  259.         TAG_DONE,
  260.  
  261.         GUIL_HorizGroup, 0,
  262.             GUIL_Flags, GUILF_PropShare | GUILF_EqualHeight,
  263.             GUIL_GadgetSpecID, GID_INBOUND,
  264.             GUIL_GadgetSpecID, GID_GETINBOUND,
  265.         TAG_DONE,
  266.  
  267.         GUIL_HorizGroup, 0,
  268.             GUIL_Flags, GUILF_PropShare | GUILF_EqualHeight,
  269.             GUIL_GadgetSpecID, GID_OUTBOUND,
  270.             GUIL_GadgetSpecID, GID_GETOUTBOUND,
  271.         TAG_DONE,
  272.  
  273.         GUIL_HorizGroup, 0,
  274.             GUIL_Flags, GUILF_PropShare | GUILF_EqualHeight,
  275.             GUIL_GadgetSpecID, GID_WORK,
  276.             GUIL_GadgetSpecID, GID_GETWORK,
  277.         TAG_DONE,
  278.  
  279.         GUIL_HorizGroup, 0,
  280.             GUIL_Flags, GUILF_PropShare | GUILF_EqualHeight,
  281.             GUIL_GadgetSpecID, GID_NODELIST,
  282.             GUIL_GadgetSpecID, GID_GETNODELIST,
  283.         TAG_DONE,
  284.  
  285.         GUIL_HorizGroup, 0,
  286.             GUIL_Flags, GUILF_PropShare | GUILF_EqualHeight,
  287.             GUIL_GadgetSpecID, GID_FATTACH,
  288.             GUIL_GadgetSpecID, GID_GETFATTACH,
  289.         TAG_DONE,
  290.  
  291.         GUIL_HorizGroup, 0,
  292.             GUIL_Flags, GUILF_PropShare | GUILF_EqualHeight,
  293.             GUIL_GadgetSpecID, GID_SAVE,
  294.             GUIL_GadgetSpecID, GID_GETSAVE,
  295.         TAG_DONE,
  296.  
  297.         GUIL_HorizGroup, 0,
  298.             GUIL_Flags, GUILF_PropShare | GUILF_EqualHeight,
  299.             GUIL_GadgetSpecID, GID_AREXX,
  300.             GUIL_GadgetSpecID, GID_GETAREXX,
  301.         TAG_DONE,
  302.  
  303.         GUIL_HorizGroup, 0,
  304.             GUIL_Flags, GUILF_PropShare | GUILF_EqualHeight,
  305.             GUIL_GadgetSpecID, GID_LOGFILE,
  306.             GUIL_GadgetSpecID, GID_GETLOGFILE,
  307.         TAG_DONE,
  308.  
  309.         GUIL_GadgetSpecID, GID_OPTIMIZE,
  310.     TAG_DONE,
  311.  
  312.     TAG_DONE
  313. };
  314.  
  315. /* Obligatory version tag */
  316.  
  317. static const char ver[] = "$VER: General 1.0 " __AMIGADATE__;
  318.  
  319. /* Now, some globals used by Generic.o during the call to GF_CreateGUIA() */
  320.  
  321. int DEMO_InitialOrientation = GUIL_HorizGroup;
  322.  
  323. STRPTR DEMO_WindowTitle = "Spot/General GUI";
  324. STRPTR DEMO_AppID       = "Spot.General";
  325.  
  326. STRPTR DEMO_Version     = "1.0",
  327.        DEMO_LongDesc    = "Demo program - The 'General' GUI of Spot",
  328.        DEMO_Author      = "Michael Berg",
  329.        DEMO_Date        = __AMIGADATE__;
  330.  
  331. BOOL   DEMO_Backfill    = FALSE;
  332.